草庐IT

Android TextView 超链接

全部标签

c++ - 如何使用外部链接在 namespace 范围内定义常量 double?

我正在尝试创建一个带有外部链接的命名空间范围常量//insomeincludefile:namespacefoo{constexprdoublebar(){return1.23456;}//internallinkageconstexprdoublebaz=1.23456;//internallinkageconstdoublebing=1.23456;//internallinkage}这可能吗? 最佳答案 是,也不是;你可以使用extern:[C++11:3.5/3]:Anamehavingnamespacescope(3.3.

c++ - 动态链接库的工作原理

我在想:当我用VisualStudio(C++)生成DLL时,它会生成一个.dll文件.lib文件我有一个.h文件那么,为什么不直接开发一个静态.lib库呢?比如为什么Office没有.lib文件?而且,将来,如果我更改DLL,我是否还必须向所有机器发送新的.lib文件和.h文件? 最佳答案 .h和.lib仅供开发人员使用。任何编写程序以使用DLL的人。那些只执行应用程序的人只需要.DLL。因此,如果您发布新版本,您会将DLL发送给用户,并将三元组发送给开发人员。除非您更改了公共(public)接口(interface)(导出),否

c++ - 不同库中的相同符号和链接顺序

我有2个库:test.1和test.2。这两个库都包含一个全局extern"C"voidf();函数,具有不同的实现(只是一个用于测试的cout)。我做了以下测试:测试1动态链接:如果我在可执行文件的makefile中添加libtest.1.so然后libtest.2.so然后调用f();main,libtest.1.so->f()被调用。如果我更改makefile中的顺序,将调用libtest.2.so->f()测试2静态链接:静态库完全一样测试3动态加载由于库是手动加载的,所以一切都按预期进行。我预计多个定义会出现错误,但这显然没有发生。此外,这并没有打破单一定义规则,因为情况不同

c++ - gcc 和 clang 中 constexpr 静态成员变量的链接器错误

我有一个片段:enumclassEC{a,b};structB{constexprB(ECec):ec_(ec){}ECec_;};structA_base{constexprA_base(Bb):b_(b){}Bb_;};structA:A_base{staticconstexprBbbb=EC::a;constexprA(Bbbbb):A_base(bbbb){}};intmain(){Aa1(A::bbb);//1Aa2{A::bbb};//2Aa3=A::bbb;//3Aa4={A::bbb};//4}它在支持c++17的现代编译器中编译良好。使用c++11和c++14标准支持

c++ - g++ 在 C++ 中的链接错误

请看下面的程序。为什么我会收到错误消息?#include#include#include#includeusingnamespacestd;classserverData{public:staticintserverTemp;staticintserver;};intmain(intargc,char**argv){strings="sajadbahmani";serverData::server=90;constchar*a=s.data();cout同时,我在尝试链接时遇到此错误:build/Debug/GNU-Linux-x86/main.o:Infunction`main':/

c++ - 针对库的静态链接实际上做了什么?

假设我有一个名为libfoo的库,其中包含一个类、一些静态变量、可能带有“C”链接的内容以及一些其他函数。现在我有一个如下所示的主程序:intmain(){return5+5;}当我编译和链接它时,我链接到libfoo。这会有什么影响吗?我的可执行文件的大小会增加吗?如果是这样,为什么?静态变量或其地址是否被复制到我的可执行文件中?如果有类似的问题或者我在任何方面都特别愚蠢,我们深表歉意。 最佳答案 它不会在现代链接器中做任何事情,因为它知道可执行文件实际上并不使用libfoo的符号。在我的系统上使用gcc4.4.1和ld2.20:

c++ - 奇怪的 mingw 链接器错误与 boost ?

我已经为此工作了一段时间,但似乎无法理解这种情况-部分原因是我不完全了解发生了什么(这就是我来这里的原因)。我正在做一种boostHelloWorld如下:#include#includevoidhelloworld(){std::printf("HELLOFROMABOOSTTHREAD!");}intmain(intargc,char**argv){boost::threadt(&helloworld);t.join();}这是在Windows上。我将Boost目录存储在C:\Boost中。我运行了bootstrap和bjam,现在有一个包含所有.lib文件的stage/lib文件

c++ - #includes 的顺序以避免链接错误

有时在C++中,包含的顺序很重要。这是openGL使用的情况:1.-正确的方式:#include//HeaderFileForWindows#include//HeaderFileForTheGLu32Library2.-错误的方式:#include//HeaderFileForTheGLu32Library#include//HeaderFileForWindowsDoesthishappenjustforsomespecificheadersorisitkindofarandomproblemdifficulttopreventapriori?如果是这样的话:HowcanIknow

c++ - 如何将 C++ 共享库与 gcc 链接

我看到了一个带有C++共享库的GCC链接,但我无法自己复制它。所以首先我创建了一个带有测试函数的C++库:g++-shared-olibtest.sotest.c然后我有一个测试主函数,它调用库函数并像这样编译它gcc-oprog.outmain.c-L.-ltest然后我收到错误undefinedreferenceto'testfunc'我认为这是由库中的不同引用引起的...C将函数命名为testfunc,而C++将函数命名为[somestuff]__testfunc[maybeagainsomestuff]。我也试过用gcc-oprog.outmain.c-l:libtest.so

c++ - Visual Studio Professional 2010 中的库链接

我正在使用Chilkat库编写C++程序。我已将整个库链接到项目,如下所示:project>properties>C/C++>General>AdditionalIncludeDirectories>C:\chilkat\include(That'swhereIhavethelibrary)和project>properties>Linker>Input>AdditionalDependencies>...C:\chilkat\libs\ChilkatDbgDll.lib;...Chilkat库带有4种.lib文件,每种用于不同类型的运行时,因此我使用了最适合我的项目(多线程调试DLL